Continuous Integration (CI) এবং Test Pipeline হল সফটওয়্যার ডেভেলপমেন্টের একটি গুরুত্বপূর্ণ প্রক্রিয়া, যা ডেভেলপমেন্ট এবং ডিপ্লয়মেন্টে দ্রুততা এবং নির্ভরযোগ্যতা নিশ্চিত করতে সাহায্য করে। CI নিশ্চিত করে যে কোডের ছোট ছোট পরিবর্তনগুলি নিয়মিতভাবে মেইন ব্রাঞ্চে ইন্টিগ্রেটেড হচ্ছে, এবং Test Pipeline নিশ্চিত করে যে এই পরিবর্তনগুলোর জন্য সঠিক ইউনিট টেস্ট চালানো হচ্ছে।
এই টিউটোরিয়ালে CI এবং Test Pipeline সেটআপ করার প্রক্রিয়া বিস্তারিতভাবে আলোচনা করা হবে, বিশেষ করে GitHub Actions বা Azure Pipelines ব্যবহার করে।
Continuous Integration (CI) কী?
Continuous Integration (CI) হলো একটি সফটওয়্যার ডেভেলপমেন্ট প্র্যাকটিস যেখানে ডেভেলপাররা তাদের কোড পরিবর্তনগুলি নিয়মিতভাবে (প্রতিদিন বা বেশ কয়েকবার) প্রধান ব্রাঞ্চে (main/master branch) ইন্টিগ্রেট করেন। এর ফলে:
- কোডের একত্রিত হওয়ার প্রক্রিয়া সহজ হয়।
- কোডের ত্রুটিগুলো দ্রুত চিহ্নিত এবং সমাধান করা যায়।
- সফটওয়্যার ডেভেলপমেন্টের গতি বাড়ানো সম্ভব হয়।
CI Setup: GitHub Actions উদাহরণ
GitHub Actions একটি শক্তিশালী টুল যা আপনার CI/CD প্রক্রিয়া অটোমেট করতে সাহায্য করে। GitHub Actions-এ YAML ফাইল ব্যবহার করে আপনি CI পিপলাইন সেটআপ করতে পারেন।
Step ১: GitHub Actions Workflow ফাইল তৈরি করা
- GitHub repository তে যান এবং
.github/workflowsফোল্ডার তৈরি করুন। - সেখানে একটি YAML ফাইল (যেমন,
ci.yml) তৈরি করুন।
name: Continuous Integration Workflow
on:
push:
branches:
- main
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up .NET SDK
uses: actions/setup-dotnet@v1
with:
dotnet-version: '5.0' # .NET version
- name: Restore dependencies
run: dotnet restore
- name: Build the project
run: dotnet build --configuration Release
- name: Run tests
run: dotnet test --configuration Release
ব্যাখ্যা:
- on.push: যখন কোড
mainব্রাঞ্চে পুশ হয়, তখন CI ওয়র্কফ্লো শুরু হবে। - jobs.build: একটি job তৈরি করা হয়েছে যেটি
ubuntu-latestপরিবেশে রান করবে। - actions/checkout: GitHub অ্যাকশন ব্যবহার করে কোড চেকআউট করা।
- actions/setup-dotnet: .NET SDK সেটআপ করা হয়েছে।
- dotnet restore: প্রজেক্টের ডিপেনডেন্সি পুনরুদ্ধার করা।
- dotnet build: প্রজেক্ট বিল্ড করা।
- dotnet test: টেস্ট রান করা।
Step ২: GitHub Actions চালানো
- এই YAML ফাইলটি আপনার GitHub repository-তে পুশ করার পর, আপনি Actions ট্যাব দেখতে পাবেন, যেখানে আপনার CI ওয়র্কফ্লো রান হচ্ছে।
Test Pipeline Setup: Azure Pipelines
Azure Pipelines Microsoft Azure-এর একটি পরিষেবা যা আপনাকে কোড বিল্ড এবং টেস্টিং প্রক্রিয়া অটোমেট করতে সাহায্য করে। এটি একটি ক্লাউড-বেসড CI/CD টুল যা GitHub, Bitbucket বা Azure Repos এর সাথে ইন্টিগ্রেট করা যায়।
Step ১: Azure Pipelines-এ একটি পিপলাইন তৈরি করা
- Azure DevOps তে আপনার প্রজেক্টে যান।
- Pipelines > Create Pipeline নির্বাচন করুন।
- GitHub বা Azure Repos Git থেকে কোড সোর্স নির্বাচন করুন।
Step ২: YAML ফাইল কনফিগারেশন
একটি YAML ফাইল তৈরি করে আপনার পিপলাইন কনফিগার করুন। নিচে একটি উদাহরণ দেওয়া হলো।
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '5.x'
installationPath: $(Agent.ToolsDirectory)/dotnet
- task: DotNetCoreCLI@2
inputs:
command: 'restore'
projects: '**/*.csproj'
- task: DotNetCoreCLI@2
inputs:
command: 'build'
projects: '**/*.csproj'
- task: DotNetCoreCLI@2
inputs:
command: 'test'
projects: '**/*.csproj'
arguments: '--configuration Release'
ব্যাখ্যা:
- trigger:
mainব্রাঞ্চে কোড পুশ হলে এই পিপলাইন রান করবে। - UseDotNet@2: .NET SDK ইনস্টল করার জন্য Azure Pipelines টাস্ক।
- DotNetCoreCLI@2:
.NET CoreCLI কমান্ডগুলোর জন্য Azure Pipelines টাস্ক। এখানেrestore,build, এবংtestকমান্ড ব্যবহৃত হয়েছে।
Step ৩: পিপলাইন রান করা
- এই YAML কনফিগারেশনটি পিপলাইন তৈরি করার পর, এটি অটোমেটিকভাবে কোড বিল্ড এবং টেস্ট করতে শুরু করবে।
৩. Unit Test Integration with CI
CI প্রক্রিয়ায় Unit Tests খুবই গুরুত্বপূর্ণ। আপনি যখন কোড পরিবর্তন করেন, তখন আপনি নিশ্চিত করতে চান যে আপনার পরিবর্তনগুলি পূর্ববর্তী ফিচারগুলোর সাথে সামঞ্জস্যপূর্ণ এবং নতুন বাগ তৈরি করেনি।
উদাহরণ: Unit Test Integration with .NET
using Xunit;
namespace MyApplication.Tests
{
public class SampleTest
{
[Fact]
public void AddNumbers_ShouldReturnCorrectSum()
{
var result = 2 + 2;
Assert.Equal(4, result);
}
}
}
C# কোড ব্যাখ্যা:
- [Fact]: এটি একটি ইউনিট টেস্টের মেথড।
- Assert.Equal: এটি নিশ্চিত করে যে দুটি মান সমান কিনা।
CI Workflow-এ টেস্ট রান:
- name: Run tests
run: dotnet test --configuration Release
এই কমান্ডটি dotnet test চালিয়ে ইউনিট টেস্ট রান করবে এবং ফলাফল GitHub Actions বা Azure Pipelines এ দেখাবে।
৪. Monitor and Notifications
CI/CD প্রক্রিয়ার অংশ হিসেবে, আপনি notification ব্যবস্থা কনফিগার করতে পারেন, যাতে টেস্ট বা বিল্ড প্রসেসে কোনো সমস্যা হলে আপনাকে দ্রুত জানানোর ব্যবস্থা থাকে।
GitHub Actions Notification:
GitHub Actions এ বিল্ড বা টেস্ট ফেইল হলে ইমেইল বা Slack ইন্টিগ্রেশন ব্যবহার করে আপনি নোটিফিকেশন পেতে পারেন। এটি GitHub Marketplace থেকে অ্যাকশন ব্যবহার করে ইনস্টল করা যেতে পারে।
Azure Pipelines Notification:
Azure Pipelines আপনাকে ইমেইল, Slack বা Microsoft Teams-এ নোটিফিকেশন পাঠানোর জন্য কনফিগারেশন প্রদান করে। আপনি Pipelines > Notifications সেকশনে গিয়ে এই সেটিংস করতে পারেন।
উপসংহার
Continuous Integration (CI) এবং Test Pipeline Setup সফটওয়্যার ডেভেলপমেন্টের প্রক্রিয়া আরও উন্নত এবং রিলায়েবল করে তোলে। GitHub Actions এবং Azure Pipelines-এর সাহায্যে, আপনি সহজেই CI/CD সেটআপ করতে পারেন, যা আপনার কোড বিল্ড, টেস্ট, এবং ডিপ্লয়মেন্ট প্রক্রিয়াগুলো অটোমেট করে দেয়। এর ফলে ডেভেলপমেন্ট প্রক্রিয়া আরও দ্রুত এবং নির্ভরযোগ্য হয়, এবং কোডের কোনো পরিবর্তন বা নতুন ফিচার প্রয়োগের পর তা সঠিকভাবে পরীক্ষা করা যায়।
Read more